Skip to content

feat(java): add JSON date/time format annotation - #3908

Merged
chaokunyang merged 1 commit into
apache:mainfrom
chaokunyang:json-format-annotation
Aug 3, 2026
Merged

feat(java): add JSON date/time format annotation#3908
chaokunyang merged 1 commit into
apache:mainfrom
chaokunyang:json-format-annotation

Conversation

@chaokunyang

@chaokunyang chaokunyang commented Aug 2, 2026

Copy link
Copy Markdown
Collaborator

Why?

Fory JSON date/time fields currently use only their built-in textual representations. Applications
need a field-owned way to select a deterministic DateTimeFormatter pattern without registering a
complete custom codec for every occurrence.

What does this PR do?

  • adds the field-only JsonFormat(pattern = ...) annotation;
  • applies the pattern to direct supported date/time values and one direct wrapper child, including
    Optional, arrays, Collection/List/Set, AtomicReference, AtomicReferenceArray, and Map
    values;
  • rejects nested or ambiguous wrapper shapes, Map keys, complete wrapper representations, and
    conflicting representation annotations;
  • keeps formatter construction and annotation resolution on the cold metadata path, reuses the
    existing generated/interpreted codec capability path, writes without an intermediate String, and
    parses ordinary ASCII input through the reader's reusable view;
  • supports runtime and processor Mixins, generated companions, Android, and GraalVM retention;
  • documents the exact supported types, root-locale behavior, UTC Instant behavior, and unsupported
    cases.

Related issues

None.

AI Contribution Checklist

Does this PR introduce any user-facing change?

  • Does this PR introduce any public API change?
  • Does this PR introduce any binary protocol compatibility change?

Benchmark

@chaokunyang
chaokunyang marked this pull request as ready for review August 3, 2026 01:33
@chaokunyang
chaokunyang merged commit b7bccc1 into apache:main Aug 3, 2026
67 checks passed
chaokunyang added a commit that referenced this pull request Aug 3, 2026
## Why?



## What does this PR do?



## Related issues

#3908 

## AI Contribution Checklist



- [ ] Substantial AI assistance was used in this PR: `yes` / `no`
- [ ] If `yes`, I included a completed [AI Contribution
Checklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)
in this PR description and the required `AI Usage Disclosure`.
- [ ] If `yes`, my PR description includes the required `ai_review`
summary and screenshot evidence or equivalent persisted links of the
final clean AI review results from both fresh reviewers described in
`AI_POLICY.md`, the Fory-guided reviewer and the independent general
reviewer, on the current PR diff or current HEAD after the latest code
changes.



## Does this PR introduce any user-facing change?



- [ ] Does this PR introduce any public API change?
- [ ] Does this PR introduce any binary protocol compatibility change?

## Benchmark
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants